Skip to content

chore(ui,shared,localizations): Add confirmation step for <ConfigureSSO />#8531

Merged
LauraBeatris merged 3 commits into
mainfrom
laura/orgs-1458-configuresso-confirmation-step
May 15, 2026
Merged

chore(ui,shared,localizations): Add confirmation step for <ConfigureSSO />#8531
LauraBeatris merged 3 commits into
mainfrom
laura/orgs-1458-configuresso-confirmation-step

Conversation

@LauraBeatris
Copy link
Copy Markdown
Member

@LauraBeatris LauraBeatris commented May 12, 2026

Description

Introduces confirmation step to surface connection information, also allowing to:

  • Update connection status
  • Go back to previous steps on "Configure again"
  • Reset connection
Screenshot 2026-05-14 at 21 56 56

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

@LauraBeatris LauraBeatris self-assigned this May 12, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented May 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clerk-js-sandbox Ready Ready Preview, Comment May 15, 2026 5:17pm

Request Review

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 12, 2026

🦋 Changeset detected

Latest commit: 1d874c3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 20 packages
Name Type
@clerk/localizations Patch
@clerk/clerk-js Patch
@clerk/shared Patch
@clerk/ui Patch
@clerk/react Patch
@clerk/chrome-extension Patch
@clerk/expo Patch
@clerk/astro Patch
@clerk/backend Patch
@clerk/expo-passkeys Patch
@clerk/express Patch
@clerk/fastify Patch
@clerk/hono Patch
@clerk/msw Patch
@clerk/nextjs Patch
@clerk/nuxt Patch
@clerk/react-router Patch
@clerk/tanstack-react-start Patch
@clerk/testing Patch
@clerk/vue Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from 47bc219 to 07df12b Compare May 12, 2026 19:23
@LauraBeatris LauraBeatris requested review from a team and iagodahlem May 12, 2026 19:36
@LauraBeatris LauraBeatris changed the title chore(ui): Add confirmation step for <ConfigureSSO /> chore(ui,shared,localizations): Add confirmation step for <ConfigureSSO /> May 12, 2026
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from e0aa425 to 3d00844 Compare May 12, 2026 19:41
@LauraBeatris LauraBeatris marked this pull request as ready for review May 13, 2026 13:29
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 13, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: e8e480c8-a5d7-4d6b-b52b-fef24934fdf9

📥 Commits

Reviewing files that changed from the base of the PR and between 148a5a5 and 1d874c3.

📒 Files selected for processing (3)
  • .changeset/forty-cameras-guess.md
  • packages/ui/src/components/ConfigureSSO/steps/ConfirmationStep.tsx
  • packages/ui/src/elements/Section.tsx
✅ Files skipped from review due to trivial changes (1)
  • .changeset/forty-cameras-guess.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/ui/src/elements/Section.tsx
  • packages/ui/src/components/ConfigureSSO/steps/ConfirmationStep.tsx

📝 Walkthrough

Walkthrough

This PR adds a composed Configure SSO confirmation UI (status badge, enable switch, domain link, SAML configuration details, and a destructive reset flow) and wires it as Flow.Part 'ssoConfirmation'. It introduces matching en-US localization keys and updates shared types (ProfileSectionId and localization shapes). UI primitives updated: Section now forwards a titleId/textId to its Text child, Switch accepts optional label and ARIA props and conditionally renders its caption, and FlowMetadata part literal was renamed. A changeset notes patch releases for affected packages.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding a confirmation step for the ConfigureSSO component across multiple packages.
Description check ✅ Passed The description is directly related to the changeset, explaining the confirmation step's purpose and functionality with a screenshot.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/ui/src/elements/Switch.tsx`:
- Around line 7-16: The Switch component currently allows omitting a visible
label and also omits any aria labeling, producing an unlabeled control; update
the component to enforce an accessible name by adding a runtime guard inside the
Switch function (the component that uses SwitchProps) that checks if props.label
is falsy AND both props['aria-label'] and props['aria-labelledby'] are falsy,
and if so emit a clear console.error (or throw) and return null (or throw) to
prevent rendering an unlabeled control; alternatively update SwitchProps to a
discriminated/union type that requires either label or one of
'aria-label'/'aria-labelledby' and add the runtime assertion to cover JS
consumers — reference SwitchProps, props.label, props['aria-label'],
props['aria-labelledby'], and the Switch component render logic to locate where
to add the check and error message.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 0a1f33e4-ee14-463f-9d11-5245c53daefb

📥 Commits

Reviewing files that changed from the base of the PR and between a233ddb and 3d00844.

📒 Files selected for processing (56)
  • .changeset/forty-cameras-guess.md
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/elementIds.ts
  • packages/shared/src/types/localization.ts
  • packages/ui/src/components/ConfigureSSO/steps/ConfirmationStep.tsx
  • packages/ui/src/elements/Section.tsx
  • packages/ui/src/elements/Switch.tsx
  • packages/ui/src/elements/contexts/index.tsx

Comment on lines 7 to 16
interface SwitchProps {
id?: string;
isChecked?: boolean;
defaultChecked?: boolean;
onChange?: (checked: boolean) => void;
isDisabled?: boolean;
label: string | LocalizationKey;
label?: string | LocalizationKey;
'aria-label'?: string;
'aria-labelledby'?: string;
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Require an accessible name when label is omitted.

Line 13 makes label optional, and Lines 115-127 skip visible text when absent. If neither aria-label nor aria-labelledby is provided (Lines 14-15, 72-73), the switch renders without an accessible name.

Suggested fix
 interface SwitchProps {
   id?: string;
   isChecked?: boolean;
   defaultChecked?: boolean;
   onChange?: (checked: boolean) => void;
   isDisabled?: boolean;
   label?: string | LocalizationKey;
   'aria-label'?: string;
   'aria-labelledby'?: string;
 }

 export const Switch = forwardRef<HTMLDivElement, SwitchProps>(
   (
@@
     ref,
   ) => {
+    if (!label && !ariaLabel && !ariaLabelledBy) {
+      throw new Error('Switch requires one of: label, aria-label, or aria-labelledby.');
+    }
+
     const [internalChecked, setInternalChecked] = useState(!!defaultChecked);
@@

As per coding guidelines: Implement proper ARIA attributes for accessibility in React components.

Also applies to: 72-73, 115-127

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/ui/src/elements/Switch.tsx` around lines 7 - 16, The Switch
component currently allows omitting a visible label and also omits any aria
labeling, producing an unlabeled control; update the component to enforce an
accessible name by adding a runtime guard inside the Switch function (the
component that uses SwitchProps) that checks if props.label is falsy AND both
props['aria-label'] and props['aria-labelledby'] are falsy, and if so emit a
clear console.error (or throw) and return null (or throw) to prevent rendering
an unlabeled control; alternatively update SwitchProps to a discriminated/union
type that requires either label or one of 'aria-label'/'aria-labelledby' and add
the runtime assertion to cover JS consumers — reference SwitchProps,
props.label, props['aria-label'], props['aria-labelledby'], and the Switch
component render logic to locate where to add the check and error message.

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented May 13, 2026

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8531

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8531

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8531

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8531

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@8531

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8531

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8531

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8531

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8531

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8531

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8531

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8531

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8531

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8531

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8531

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8531

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8531

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8531

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8531

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8531

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8531

commit: 1d874c3

@LauraBeatris LauraBeatris marked this pull request as draft May 13, 2026 19:42
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from 3d00844 to 89f54e0 Compare May 14, 2026 22:26
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from 89f54e0 to de76ddf Compare May 14, 2026 22:32
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from de76ddf to 28f5c19 Compare May 14, 2026 22:42
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from 28f5c19 to c2402cf Compare May 14, 2026 23:28
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from c2402cf to b16afe2 Compare May 15, 2026 00:56
@LauraBeatris LauraBeatris marked this pull request as ready for review May 15, 2026 00:57
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from b16afe2 to 148a5a5 Compare May 15, 2026 16:31
@LauraBeatris LauraBeatris force-pushed the laura/orgs-1458-configuresso-confirmation-step branch from 148a5a5 to 1d874c3 Compare May 15, 2026 17:16
Copy link
Copy Markdown
Contributor

@NicolasLopes7 NicolasLopes7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good!

@LauraBeatris LauraBeatris merged commit b45777c into main May 15, 2026
43 checks passed
@LauraBeatris LauraBeatris deleted the laura/orgs-1458-configuresso-confirmation-step branch May 15, 2026 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants